5 REM FILE LOCK V0222/85 10 GOTO 10000 50 POKE 198,0 52 GET A$:IF A$="" THEN GOTO 52 55 RETURN 70 REM WAIT FOR RETURN 80 POKE 198,0:POKE 204,0 85 GET A$:POKE 207,0:IF A$<>CHR$(13) THEN GOTO 85 90 POKE 204,1:PRINT " "CHR$(157);:RETURN 100 REM WAIT FOR KEY 105 POKE 198,0:POKE 204,0 110 GET A$:POKE 207,0:IF A$="" THEN GOTO 110 115 POKE 204,1:PRINT " "CHR$(157);:RETURN 150 REM BOX ROUTINE 152 GOSUB 190 155 PRINT CHR$(117);:FOR I=0 TO W-2:PRINT CHR$(99);:NEXT I:PRINT CHR$(105); 158 FOR J=0 TO H-2:RW=RW+1:GOSUB 190 160 PRINT CHR$(103);:FOR I=0 TO W-2:PRINT " ";:NEXT I:PRINT CHR$(104); 161 NEXT J 162 RW=RW+1:GOSUB 190 165 PRINT CHR$(106);:FOR I=0 TO W-2:PRINT CHR$(99);:NEXT I:PRINT CHR$(107); 170 PRINT BL$;:RETURN 190 REM SET CURSOR LOCATIOM 195 POKE 214,RW:POKE 211,CL:SYS 58640:RETURN 200 REM READ DIRECTORY 210 OPEN 15,8,15,"I0:":OPEN 2,8,2,"#" 220 TK=18:SC=1:NF=0 230 PRINT#15,"U1";2;0;TK;SC 240 GET#2,A$:A$=A$+CHR$(0):T=ASC(A$) 250 GET#2,A$:A$=A$+CHR$(0):S=ASC(A$) 260 FOR F=0 TO 7:REM 8 ENTRIES/SEC 270 PRINT#15,"B-P";2;F*32+2 275 GET#2,A$:IF A$="" THEN A$=CHR$(0) 280 A=ASC(A$):IF ASC(A$)=0 THEN GOTO 325 285 L$=">":IF (A AND 64) =0 THEN L$="[160]" 290 GET#2,A$:GET#2,A$ 300 F$=L$+"" 305 FOR I=0 TO 15:GET#2,A$:IF A$="" THEN A$=CHR$(0) 310 IF ASC(A$)=160 THEN GOTO 320 315 F$=F$+A$ 320 NEXT I 322 FL$(NF)=F$:S(NF)=SC:EN(NF)=F:NF=NF+1 325 NEXT F 330 IF T<>0 THEN TK=T:SC=S:GOTO 230 335 CLOSE2:CLOSE15 340 NF=NF-1:RETURN 400 REM PRINT FORMATTED SCREEN 405 PRINT CHR$(147);:PRINT HD$:PRINT 410 RW=2:CL=0:H=20:W=19:GOSUB 150: 415 RW=2:CL=20:H=20:W=19:GOSUB 150 450 REM FILL SCREEN WITH FILES 455 RW=3:CL=1:GOSUB 190:ZN=0 460 FOR J=0 TO 18:I=PG*38+ZN*19+J 462 IF SF(I)=0 THEN PRINT FL$(I);:GOTO 464 463 IF SF(I)=1 THEN PRINT RV$FL$(I)RO$; 464 RW=RW+1:GOSUB 190:NEXT J 465 RW=3:CL=21:GOSUB 190:ZN=1 470 FOR J=0 TO 18:I=PG*38+ZN*19+J 472 IF SF(I)=0 THEN PRINT FL$(I);:GOTO 474 473 IF SF(I)=1 THEN PRINT RV$FL$(I)RO$; 474 RW=RW+1:GOSUB 190:NEXT J 475 ZN=0:RETURN 500 REM SCRATCH 510 NC$="SCRATCH FILES " 515 GOSUB 800 519 OPEN 15,8,15 520 FOR I=0 TO NF:IF SF(I)=0 THEN GOTO 540 525 F$=FL$(I):IF LEFT$(F$,1)=">" THEN GOTO 540 530 F$=RIGHT$(F$,LEN(F$)-1) 535 PRINT#15,"S0:"F$:GOSUB 900 540 NEXT I 550 CLOSE 15 599 RETURN 600 REM LOCK 610 NC$=" LOCK FILES " 615 GOSUB 800 619 OPEN 15,8,15:OPEN 2,8,2,"#" 620 FOR I=0 TO NF:IF SF(I)=0 THEN GOTO 660 630 GOSUB 690 635 GET#2,A$:IF A$="" THEN A$=CHR$(0) 640 FT=ASC(A$):FT=(FT OR 64) 650 GOSUB 680 655 GOSUB 900 660 NEXT I 670 CLOSE 2:CLOSE15:RETURN 680 GOSUB 695:PRINT#2,CHR$(FT); 684 PRINT#15,"B-P";2;0 685 PRINT#15,"U2";2;0;18;S(I):RETURN 690 PRINT#15,"U1";2;0;18;S(I) 695 PRINT#15,"B-P";2;EN(I)*32+2:RETURN 699 RETURN 700 REM UNLOCK 705 RW=1:CL=12:GOSUB 190 710 NC$=" UNLOCK FILES " 715 GOSUB 800 719 OPEN 15,8,15:OPEN 2,8,2,"#" 720 FOR I=0 TO NF:IF SF(I)=0 THEN GOTO 660 730 GOSUB 690 735 GET#2,A$:IF A$="" THEN A$=CHR$(0) 740 FT=ASC(A$):FT=(FT AND 191) 750 GOSUB 680:GOSUB 900 760 NEXT I 770 CLOSE 2:CLOSE15:RETURN 800 REM SELECT FILES 805 RW=1:CL=12:GOSUB 190:PRINT YL$NC$; 806 RW=24:CL=0:GOSUB 190:PRINT CD$; 807 RW=3:CL=18:GOSUB 190:PRINT AR$;:J=0 810 GOSUB 50 811 IF A$=CM$ THEN RETURN 812 IF A$=CHR$(13) THEN GOSUB 820:GOTO 810 813 IF A$=AR$ THEN GOTO 10000:REM EXIT AND START OVER 814 IF A$=CHR$(19) THEN GOSUB 190:PRINT " ";:GOSUB 1000:GOTO 805 815 IF A$=CHR$(157) THEN GOSUB 890:GOTO 810 816 IF A$=CHR$(17) THEN GOSUB 840:GOTO 810 817 IF A$=CHR$(145) THEN GOSUB 860:GOTO 810 818 IF A$=CHR$(29) THEN GOSUB 880:GOTO 810 819 GOTO 810 820 TP=CL:CL=CL-17:I=PG*38+ZN*19+J 821 IFSF(I)=1THENGOSUB190:PRINTCHR$(146)FL$(CF+I);:SF(I)=0:GOTO 824 823 IF SF(I)=0 THEN GOSUB 190:PRINT CHR$(18)FL$(CF+I)CHR$(146);:SF(I)=1 824 CL=TP:RETURN 840 I=PG*38+ZN*19+J:IF I=NF THEN RETURN 841 J=J+1:IF J>19 THEN J=19 844 GOSUB 190:PRINT " "; 845 RW=RW+1:IF RW>21 THEN RW=21:J=J-1 850 GOSUB 190:PRINT AR$;:RETURN 860 J=J-1:IF J<0 THEN J=0 861 GOSUB 190:PRINT " "; 865 RW=RW-1:IF RW<3 THEN RW=3 870 GOSUB 190:PRINT AR$;:RETURN 880 IF NFNF THEN PG=0 1010 GOSUB 400:RETURN 10000 CLR:DIM FL$(76),S(76),EN(76),SF(76) 10005 BL$=CHR$(154):YL$=CHR$(158):RV$=CHR$(18):RO$=CHR$(146):AR$=CHR$(95) 10010 POKE 53280,11:POKE 53281,0:PRINT CHR$(147)BL$; 10012 CD$=BL$+" "+YL$+" MOVES "+BL$+" "+YL$+" SELECTS [160]"+BL$ 10015 HD$=CHR$(18)+" FILE LOCK V0222/85 "+CHR$(146) 10020 PRINT HD$; 10030 PRINT:PRINT "INSERT DISK AND HIT "YL$""BL$; 10035 GOSUB 70:PRINT:PRINT "READING DIRECTORY": 10040 GOSUB 200:PG=0:ZN=0:GOSUB 400 10050 RW=24:CL=0:GOSUB 190 10055 PRINTYL$ "SCRATCH LOCK UNLOCK PAGE BOOT QUIT ? "BL$CHR$(157); 10056 GOSUB 100 10060 IF A$="Q" THEN END 10065 IF A$="S" THEN PRINT A$;:CM$=A$:GOSUB 500:GOTO 10000 10070 IF A$="L" THEN PRINT A$;:CM$=A$:GOSUB 600:GOTO 10000 10075 IF A$="U" THEN PRINT A$;:CM$=A$:GOSUB 700:GOTO 10000 10080 IF A$="B" THEN PRINT A$;:GOTO 10000 10085 IF A$="P" THEN PRINT A$;:GOSUB 1000 10090 GOTO 10050 60000 CLOSE 15:OPEN 15,8,15,"I0:":CLOSE15 60001 SAVE "@0:FILE LOCK V0222",8 61000 OPEN 15,8,15:INPUT#15,A$,B$,C$,D$ 61001 PRINT:PRINT A$"[160]"B$"[160]"C$"[160]"D$:CLOSE15:STOP